#coding=utf-8
import timeit,math
class TimeMeth(object):
    def __init__(self, orig_func):
        self.f = orig_func
    
    def __call__(self, *args, **kwargs):
        start = timeit.default_timer()
        r = self.f(*args, **kwargs)
        end = timeit.default_timer()
        print "The running time for %s:%2f"%(self.f.__name__, end-start)
        return r

@TimeMeth
def f(n):
    r = 0
    for i in range(1, n):
        t = math.factorial(i) 
        r = r + t
        
    return r

if __name__ == '__main__':
    f(5000)

